FEXP Solver  1.0.0.0
FEXPCalculationResult.h
Go to the documentation of this file.
1 // © FEXP, FEXPEnterprise Solver, Ing. Vaclav Rek
3 // Results of a numerical simulation
4 // Compiler must support C++ ver.14 and later
6 #ifndef _CFEXPCALCULATIONRESULT_H_
7 #define _CFEXPCALCULATIONRESULT_H_
8 #include "FEXPCommon.h"
10 #include "FEXPDataContainer.h"
11 
18 
21 {
22  size_t _model_id; size_t _node_id;
29  static std::string GetDefOrder()
30  {
31  std::string tabdef = FEXPCOMMON_EMPTY_STRING;
32  tabdef += "model_id" + std::string(FEXPCOMMON_DELIMITER);
33  tabdef += "node_id" + std::string(FEXPCOMMON_DELIMITER);
34  tabdef += "time_counter" + std::string(FEXPCOMMON_DELIMITER);
35  tabdef += "time" + std::string(FEXPCOMMON_DELIMITER);
36  tabdef += "cx" + std::string(FEXPCOMMON_DELIMITER);
37  tabdef += "cy" + std::string(FEXPCOMMON_DELIMITER);
38  tabdef += "cz" + std::string(FEXPCOMMON_DELIMITER);
39  tabdef += "ux" + std::string(FEXPCOMMON_DELIMITER);
40  tabdef += "uy" + std::string(FEXPCOMMON_DELIMITER);
41  tabdef += "uz" + std::string(FEXPCOMMON_DELIMITER);
42  tabdef += "fix" + std::string(FEXPCOMMON_DELIMITER);
43  tabdef += "fiy" + std::string(FEXPCOMMON_DELIMITER);
44  tabdef += "fiz" + std::string(FEXPCOMMON_DELIMITER);
45  tabdef += "epsx" + std::string(FEXPCOMMON_DELIMITER);
46  tabdef += "epsy" + std::string(FEXPCOMMON_DELIMITER);
47  tabdef += "epsxy" + std::string(FEXPCOMMON_DELIMITER);
48  tabdef += "sigx" + std::string(FEXPCOMMON_DELIMITER);
49  tabdef += "sigy" + std::string(FEXPCOMMON_DELIMITER);
50  tabdef += "sigxy";
51  return tabdef;
52  }
53 
56  std::string GetSerializedData()
57  {
58  std::string data = FEXPCOMMON_EMPTY_STRING;
78  return data;
79  }
80 };
81 
88 
91 {
92  size_t _model_id; size_t _fe_id;
94  size_t _node1_id; size_t _node2_id; size_t _node3_id;
95  static std::string GetDefOrder()
96  {
97  std::string tabdef = FEXPCOMMON_EMPTY_STRING;
98  tabdef += "model_id" + std::string(FEXPCOMMON_DELIMITER);
99  tabdef += "fe_id" + std::string(FEXPCOMMON_DELIMITER);
100  tabdef += "time_counter" + std::string(FEXPCOMMON_DELIMITER);
101  tabdef += "time" + std::string(FEXPCOMMON_DELIMITER);
102  tabdef += "node1_id" + std::string(FEXPCOMMON_DELIMITER);
103  tabdef += "node2_id" + std::string(FEXPCOMMON_DELIMITER);
104  tabdef += "node3_id";
105  return tabdef;
106  }
107 
110  std::string GetSerializedData()
111  {
112  std::string data = FEXPCOMMON_EMPTY_STRING;
120  return data;
121  }
122 };
123 
130 
133  : public ICFEXPModelDataIntf
134 {
135 public:
136  CFEXPCalculationModelNodeResult(size_t time_id);
138 
139  // override pure virtual member function
140  virtual size_t GetId () override { return _result_time_id; }
141  virtual size_t GetType () override { return size_t(ESystemElementType::eResult); }
142  virtual size_t GetModelId () override { FEXPCOMMON_NOT_IMPLEMENTED_EX; }
143  virtual size_t GetThreadId () override { FEXPCOMMON_NOT_IMPLEMENTED_EX; }
144  virtual size_t GetThreadNumber() override { FEXPCOMMON_NOT_IMPLEMENTED_EX; }
145  virtual void SetThreadId (size_t id) override { FEXPCOMMON_NOT_IMPLEMENTED_EX; }
146  // serialization -- not implemented
149 
154  template<typename TType>
155  void AddNewTimeResult(Ptr<std::map<std::string, std::string>> res_map);
156  void ClearData () { _time_node_results.clear(); _fe_connectivity.clear(); }
157  // current results
158  std::vector<Ptr<CFEXPNodeResultData >> & GetNodeResults () { return _time_node_results; }
159  std::vector<Ptr<CFEXPResultElementConnect>> & GetConnectivity() { return _fe_connectivity; }
160 protected:
161  // [no protected members] -----------------------------
162 private:
163  size_t _result_time_id;
164  std::vector<Ptr<CFEXPNodeResultData >> _time_node_results;
165  std::vector<Ptr<CFEXPResultElementConnect>> _fe_connectivity;
166 };
167 
168 //--------------------------------------------------------------------------------------
169 template<typename TType>
170 void CFEXPCalculationModelNodeResult::AddNewTimeResult(Ptr<std::map<std::string, std::string>> res_map)
171 //--------------------------------------------------------------------------------------
172 {
173  if (std::is_same<TType, CFEXPNodeResultData>::value)
174  {
176  data->_model_id = CFEXPBaseConvers::StringToNumber<size_t> (res_map->at("model_id" ));
177  data->_node_id = CFEXPBaseConvers::StringToNumber<size_t> (res_map->at("node_id" ));
178  data->_time_counter = CFEXPBaseConvers::StringToNumber<size_t> (res_map->at("time_counter"));
179  data->_time = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("time" ));
180  data->_cx = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("cx" ));
181  data->_cy = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("cy" ));
182  data->_cz = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("cz" ));
183  data->_ux = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("ux" ));
184  data->_uy = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("uy" ));
185  data->_uz = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("uz" ));
186  data->_fix = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("fix" ));
187  data->_fiy = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("fiy" ));
188  data->_fiz = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("fiz" ));
189  data->_epsx = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("epsx" ));
190  data->_epsy = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("epsy" ));
191  data->_epsxy = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("epsxy" ));
192  data->_sigx = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("sigx" ));
193  data->_sigy = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("sigy" ));
194  data->_sigxy = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("sigxy" ));
195  _time_node_results.push_back(data);
196  return;
197  }
198 
199  if (std::is_same<TType, CFEXPResultElementConnect>::value)
200  {
202  data->_model_id = CFEXPBaseConvers::StringToNumber<size_t> (res_map->at("model_id" ));
203  data->_fe_id = CFEXPBaseConvers::StringToNumber<size_t> (res_map->at("fe_id" ));
204  data->_time_counter = CFEXPBaseConvers::StringToNumber<size_t> (res_map->at("time_counter"));
205  data->_time = CFEXPBaseConvers::StringToNumber<t_fexpcommon_ct>(res_map->at("time" ));
206  data->_node1_id = CFEXPBaseConvers::StringToNumber<size_t> (res_map->at("node1_id" ));
207  data->_node2_id = CFEXPBaseConvers::StringToNumber<size_t> (res_map->at("node2_id" ));
208  data->_node3_id = CFEXPBaseConvers::StringToNumber<size_t> (res_map->at("node3_id" ));
209  _fe_connectivity.push_back(data);
210  return;
211  }
212  FEXPCOMMON_EXCEPTION("Error: Wrong result template parameter!!!");
213 }
214 
215 #endif // !_CFEXPCALCULATIONRESULT_H_
Results in FE nodes.
Definition: FEXPCalculationResult.h:20
t_fexpcommon_ct _epsy
Definition: FEXPCalculationResult.h:27
static std::string GetDefOrder()
Definition: FEXPCalculationResult.h:95
std::string GetSerializedData()
Serialize data.
Definition: FEXPCalculationResult.h:56
CFEXPCalculationModelNodeResult(size_t time_id)
Definition: FEXPCalculationResult.cpp:9
t_fexpcommon_ct _time
Definition: FEXPCalculationResult.h:23
t_fexpcommon_ct _sigxy
Definition: FEXPCalculationResult.h:28
FE connectivity.
Definition: FEXPCalculationResult.h:90
virtual Ptr< t_SerializedData > NetSerialize() override
Definition: FEXPCalculationResult.h:147
void ClearData()
Definition: FEXPCalculationResult.h:156
virtual void NetDeserialize(Ptr< t_SerializedData > data) override
Definition: FEXPCalculationResult.h:148
static std::string GetDefOrder()
Definition: FEXPCalculationResult.h:29
t_fexpcommon_ct _cz
Definition: FEXPCalculationResult.h:24
t_fexpcommon_ct _epsx
Definition: FEXPCalculationResult.h:27
t_fexpcommon_ct _fix
Definition: FEXPCalculationResult.h:26
std::string GetSerializedData()
Serialize data.
Definition: FEXPCalculationResult.h:110
Definition: FEXPCommon.h:276
double t_fexpcommon_ct
Definition: FEXPCommon.h:120
size_t _fe_id
Definition: FEXPCalculationResult.h:92
size_t _node_id
Definition: FEXPCalculationResult.h:22
Definition: FEXPDataContainer.h:25
virtual ~CFEXPCalculationModelNodeResult()
Definition: FEXPCalculationResult.h:137
size_t _model_id
Definition: FEXPCalculationResult.h:92
t_fexpcommon_ct _epsxy
Definition: FEXPCalculationResult.h:27
#define FEXPCOMMON_NOT_IMPLEMENTED_EX
Definition: FEXPCommon.h:144
t_fexpcommon_ct _sigx
Definition: FEXPCalculationResult.h:28
void AddNewTimeResult(Ptr< CFEXPCalculationResTable_NODE_RES > results)
Definition: FEXPCalculationResult.cpp:14
static std::enable_if< std::is_arithmetic< TValue >::value, std::string >::type NumberToString(TValue value)
Definition: FEXPCommon.h:1079
t_fexpcommon_ct _cx
Definition: FEXPCalculationResult.h:24
size_t _node2_id
Definition: FEXPCalculationResult.h:94
virtual size_t GetId() override
Definition: FEXPCalculationResult.h:140
size_t _time_counter
Definition: FEXPCalculationResult.h:93
t_fexpcommon_ct _cy
Definition: FEXPCalculationResult.h:24
It stores the result data.
Definition: FEXPCalculationResult.h:132
t_fexpcommon_ct _fiy
Definition: FEXPCalculationResult.h:26
#define FEXPCOMMON_DELIMITER
Definition: FEXPCommon.h:180
#define FEXPCOMMON_EXCEPTION(error_text)
Definition: FEXPCommon.h:143
#define FEXPCOMMON_EMPTY_STRING
Definition: FEXPCommon.h:183
t_fexpcommon_ct _uz
Definition: FEXPCalculationResult.h:25
t_fexpcommon_ct _sigy
Definition: FEXPCalculationResult.h:28
size_t _time_counter
Definition: FEXPCalculationResult.h:23
virtual size_t GetType() override
Definition: FEXPCalculationResult.h:141
static Ptr< TType > SafeAllocInstance(VarArgs &&... inpar)
It allocates data.
Definition: FEXPCommon.h:392
size_t _model_id
Definition: FEXPCalculationResult.h:22
t_fexpcommon_ct _ux
Definition: FEXPCalculationResult.h:25
t_fexpcommon_ct _time
Definition: FEXPCalculationResult.h:93
virtual void SetThreadId(size_t id) override
Definition: FEXPCalculationResult.h:145
t_fexpcommon_ct _fiz
Definition: FEXPCalculationResult.h:26
std::vector< Ptr< CFEXPNodeResultData > > & GetNodeResults()
Definition: FEXPCalculationResult.h:158
size_t _node3_id
Definition: FEXPCalculationResult.h:94
Base interface for system element.
Definition: FEXPDataContainer.h:28
virtual size_t GetThreadId() override
Definition: FEXPCalculationResult.h:143
size_t _node1_id
Definition: FEXPCalculationResult.h:94
t_fexpcommon_ct _uy
Definition: FEXPCalculationResult.h:25
virtual size_t GetThreadNumber() override
Definition: FEXPCalculationResult.h:144
std::vector< Ptr< CFEXPResultElementConnect > > & GetConnectivity()
Definition: FEXPCalculationResult.h:159
virtual size_t GetModelId() override
Definition: FEXPCalculationResult.h:142